package es.spider.controller;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;

import es.spider.dao.Enlace;
import es.spider.dao.Pelicula;
import es.spider.service.HomeService;
import es.spider.utils.SessionConstants;

@Controller
@SessionAttributes({SessionConstants.PELIS,
					SessionConstants.DETALLE_PELI,
					SessionConstants.ENLACES})
@RequestMapping("/home")
public class HomeController {

	@Autowired
	private transient HomeService homeService;
	
	/**
	 * Redireccion inicio
	 * @return
	 */
	@RequestMapping(value="/inicio", method={RequestMethod.GET, RequestMethod.POST})
	public String inicio(HttpServletRequest request, ModelMap model){
		return "inicio";
	}
	
	/**
	 * Busqueda de contenido en fichero local
	 * @return
	 */
	@RequestMapping(value="/buscarLocal",method={RequestMethod.GET, RequestMethod.POST})
	public String buscarLocal(HttpServletRequest request, ModelMap model){
		//String url = "C:\\Users\\rarba4h\\Desktop\\resultados_film.htm"; 
		String url = "C:\\Users\\rarba4h\\Desktop\\resulSer.html";
		List<Pelicula> lista = homeService.parsea(url);
		model.addAttribute(SessionConstants.PELIS, lista);
		return "resultados";
	}
	
	/**
	 * Busqueda de contenido en portal externo
	 * @return
	 */
	@RequestMapping(value="/buscar",method={RequestMethod.GET, RequestMethod.POST})
	public String buscar(HttpServletRequest request, ModelMap model){
		String busqueda = request.getParameter("busqueda");
		String url = "http://www.filmaffinity.com/es/search.php?stype=cast&amp;stext="+busqueda.replace(" ","+");
		List<Pelicula> lista = homeService.parsea(url);
		model.addAttribute(SessionConstants.PELIS, lista);
		return "resultados";
	}
	
	/**
	 * Busqueda de contenido relacionado
	 * @return
	 */
	@RequestMapping(value="/buscarRelacionado",method={RequestMethod.GET, RequestMethod.POST})
	public String buscarRelacionado(HttpServletRequest request, ModelMap model){
		String texto = request.getParameter("texto");
		String url = "http://www.filmaffinity.com/es/search.php?stype=cast&amp;stext="+texto.replace(" ","+");
		List<Pelicula> lista = homeService.parsea(url);
		model.addAttribute(SessionConstants.PELIS, lista);
		return "resultados";
	}
	
	/**
	 * Busqueda de contenido relacionado
	 * @return
	 */
	@RequestMapping(value="/detalle", method=RequestMethod.GET)
	public String detalle(HttpServletRequest request, ModelMap model){
		String titulo = request.getParameter("titulo");
		// Url detalle pelicula
		//String url = "C:\\Users\\rarba4h\\Desktop\\detallefilm.html";
		// Url detalle serie
		String url = "C:\\Users\\rarba4h\\Desktop\\detalleSer.html";
		Pelicula peli = homeService.parseaDetalle(url);
		peli.setTitulo(titulo);
		model.addAttribute(SessionConstants.DETALLE_PELI, peli);
		return "detalle";
	}
	
	/**
	 * Busqueda de enlaces de un determinado contenido
	 * @return
	 */
	@RequestMapping(value="/detalle", method=RequestMethod.POST)
	public String detalleEnlaces(HttpServletRequest request, ModelMap model){
		List<Enlace> enlaces = new ArrayList<Enlace>();
		Pelicula peli = (Pelicula)model.get(SessionConstants.DETALLE_PELI);
		if (peli.getTituloOriginal().contains("Series")){			
			enlaces = homeService.buscaEnlacesSerie(peli);
			model.addAttribute(SessionConstants.ENLACES,enlaces);
			return "detalleEnlacesSeries";
		}else{
			enlaces = homeService.buscaEnlacesPeli(peli);
			model.addAttribute(SessionConstants.ENLACES,enlaces);
			return "detalleEnlaces";
		}
		
	}
	
}

